package com.tlvip;

/**
 * <p>description：</p>
 * <p>copyright： copyright(C)2016-2099</p>
 * <p>Life is short,we need passion</p>
 * <p>Summary： </p>
 * <p>instructions： </p>
 * Date 2022/5/21</p>
 * Author mac
 *
 * @version 1.0
 */
public class DoubleCheck {

    private volatile DoubleCheck instance;

    private DoubleCheck getInstance() {
        // 1.判断变量是否空
        if (instance == null) {
            // 防止多线程进入时，进行了不安全的操作
            synchronized (DoubleCheck.class) {
                // 再次判断是否空，防止上一个线程已经初始化之后，当前线程再次初始化，得到的对象就不是同一个对象
                // volatile 关键字保证对象可见性
                if (null == instance) {
                    instance = new DoubleCheck();
                }
            }
        }
        return instance;
    }

    public static void main(String[] args) {

    }
}
